Release 10.1A: OpenEdge Development:
Debugging and Troubleshooting


4GLTrace logging

Specifying the 4GLTrace log entry type turns on logging for the execution of internal procedures, user-defined functions, persistent triggers, and named events (generated by the RUN, FUNCTION, PUBLISH, or SUBSCRIBE statements, respectively). It also logs the instantiation of classes (generated by the NEW statement), the invocation of super classes and methods (generated by the METHOD invocation syntax), and the deletion of classes (generated by the DELETE OBJECT statement). 4GL Trace logging is available on all OpenEdge clients including GUI clients, character clients, WebSpeed agents, and AppServer agents. Log entries generated for this type contain the tag 4GLTrace.

4GL Trace logging logs an entry message when execution of a an internal procedure, user-defined function, persistent user-interface trigger, named events, classes, methods, PUBLISH statement, and SUBSCRIBE statement begins. Information is logged at Level 2 (Basic) and higher. 4GL Trace logging logs a to indicate the application returned. Return messages are logged at Level 3 (Verbose) and higher.

The general format for 4GLTrace logging entry messages is:

type routine-name [PERS TRIG] [in routine-name] [PERSIST] "input-param" 
[caller - source @ line-number] 

type

The following table lists the entry type and description:

Type
Description
Run
Procedures
Function
User-defined functions
Publish
Published events
Subscribe
Named events
Super
Invocation of super class
New
Instantiation of classes
Invoke
Invocation of methods
Delete
Deletion of classes

routine-name

Procedure or function name being executed. For classes, this is the name of the class being instantiated or destroyed, or the name of the invoked method.

PERS TRIG

Indicates that the procedure runs as a result of a persistent trigger. In this case, this is the only piece of information in the log entry after the routine-name.

in routine-name

For procedures, logs the calling routine-name. For example, RUN xx in yy statement, logs yy as the routine-name. For functions and methods, logs the function or method when the function or method is not located in the caller procedure or class.

PERSIST

Indicates the RUN statement has the PERSISTENT clause.

input-param

List of input and input-output parameters, each separated by a single space.

caller

Indicates where the call to the statement or function is: Main block, SYSTEM-TRIGGER, or the name of an internal procedure, function or method.

source

Indicates the name of the procedure or class which contains the caller.

@ line-number

Indicates the line number where the procedure routine-name is executed by the caller routine. When implicitly invoking the constructor of the super-class, this is the string IMPLICIT.

For example:

4GLTrace Run myproc in myproc2.p "my parameters" [init - foo.p @ 10] 

The following example shows 4GLTrace logging for classes:

4GLTrace New temp [Main Block - foo.p @ 10] 
4GLTrace Super tempbase [temp - temp @ 5] 
4GLTrace Invoke bar in temp "3" [Main Block - foo.p @ 11] 
4GLTrace Delete temp [Main Block - foo.p @12] 

The general format for 4GLTrace logging return message is:

Return from routine-name "output-param" [program-name]  

routine-name

Name of internal procedure, function, method, user-interface trigger, PUBLISH statement, or Main Block.

output-param

List of OUTPUT, INPUT-OUTPUT, and RETURN parameters.

program-name

Name of program containing called procedure.

For example:

4GLTrace Return from myproc "my parameters" [myproc2.p]  


Copyright © 2005 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095